package com.zenithmind.classroom.pojo.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 学习进度实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("classroom_learning_progress")
@Schema(description = "学习进度实体")
public class LearningProgress extends BaseEntity {

    /**
     * 用户ID
     */
    @Schema(description = "用户ID")
    private String userId;

    /**
     * 课程ID
     */
    @Schema(description = "课程ID")
    private String courseId;

    /**
     * 章节ID
     */
    @Schema(description = "章节ID")
    private String chapterId;

    /**
     * 课时ID
     */
    @Schema(description = "课时ID")
    private String lessonId;

    /**
     * 学习状态（0:未开始, 1:学习中, 2:已完成, 3:已暂停）
     */
    @Schema(description = "学习状态（0:未开始, 1:学习中, 2:已完成, 3:已暂停）")
    private Integer status;

    /**
     * 学习进度（百分比）
     */
    @Schema(description = "学习进度（百分比）")
    private Integer progress;

    /**
     * 观看时长（秒）
     */
    @Schema(description = "观看时长（秒）")
    private Integer watchTime;

    /**
     * 最后观看位置（秒）
     */
    @Schema(description = "最后观看位置（秒）")
    private Integer lastPosition;

    /**
     * 学习次数
     */
    @Schema(description = "学习次数")
    private Integer studyCount;

    /**
     * 总学习时长（分钟）
     */
    @Schema(description = "总学习时长（分钟）")
    private Integer totalStudyTime;

    /**
     * 开始学习时间
     */
    @Schema(description = "开始学习时间")
    private LocalDateTime startTime;

    /**
     * 完成时间
     */
    @Schema(description = "完成时间")
    private LocalDateTime completeTime;

    /**
     * 最后学习时间
     */
    @Schema(description = "最后学习时间")
    private LocalDateTime lastStudyTime;

    /**
     * 学习设备类型（1:PC, 2:手机, 3:平板）
     */
    @Schema(description = "学习设备类型（1:PC, 2:手机, 3:平板）")
    private Integer deviceType;

    /**
     * 学习质量评分（1-5星）
     */
    @Schema(description = "学习质量评分（1-5星）")
    private Integer qualityScore;

    /**
     * 学习笔记数量
     */
    @Schema(description = "学习笔记数量")
    private Integer noteCount;

    /**
     * 提问数量
     */
    @Schema(description = "提问数量")
    private Integer questionCount;

    /**
     * 是否收藏（0-否，1-是）
     */
    @Schema(description = "是否收藏（0-否，1-是）")
    private Integer isFavorite;
}
